﻿Imports Microsoft.VisualBasic
Imports System.Configuration
Imports Comunes
Imports System.Web
Imports System.Data
Imports System.IO

Public Class cls_usuariosApp

#Region "VARIABLES"
    Dim v_obj_wsService As New Service.Service
    Dim v_obj_clsParametros As New Parametros()
    Dim v_obj_clsLibreria As New clsLibreria()
    Dim v_dts_respuesta As New DataSet
    Dim v_obj_json As New clsJsonSR.clsJsonSR()
    Dim v_obj_clsErrores As New cls_errores()
    Dim v_str_keyConn As String = System.Configuration.ConfigurationManager.AppSettings.Get("KeyConexion")
    Dim v_str_glsError As String = ""
    Dim v_str_srcError As String = ""
    Dim v_str_wsError As String = ""
    Dim v_str_metError As String = ""
    Dim v_str_numError As String = ""
    Dim v_str_ServidorMail As String = System.Configuration.ConfigurationManager.AppSettings.Get("ServidorMail")
    Dim v_str_CorreoDesde As String = System.Configuration.ConfigurationManager.AppSettings.Get("CorreoDesde")
    Dim v_str_usuarioMail As String = System.Configuration.ConfigurationManager.AppSettings.Get("usuarioMail")
    Dim v_str_claveMail As String = System.Configuration.ConfigurationManager.AppSettings.Get("claveMail")
    Dim v_str_dominioMail As String = System.Configuration.ConfigurationManager.AppSettings.Get("dominioMail")
    Dim v_obj_mail As New Comunes.clsMail

    Private _USUS_NID As String
    Private _USUS_RUT As String
    Private _USUS_USUARIO As String
    Private _USUS_PASSWORD As String
    Private _USUS_NOMBRE As String
    Private _USUS_APPATERNO As String
    Private _USUS_APMATERNO As String
    Private _USUS_EMAIL As String
    Private _USUS_TELEFONO As String
    Private _USUS_FEC_REGISTRO As String
    Private _USUS_FEC_MODIFICACION As String
    Private _ESES_NID As Integer
    Private _PEPE_NID As Integer
    Private _EMEM_RUT As String

    Private _cantPagina As Integer
    Private _numPagina As Integer
#End Region
#Region "CONSTRUCTOR"
    Sub New()
        _USUS_NID = ""
        _USUS_RUT = ""
        _USUS_USUARIO = ""
        _USUS_PASSWORD = ""
        _USUS_NOMBRE = ""
        _USUS_APPATERNO = ""
        _USUS_APMATERNO = ""
        _USUS_EMAIL = ""
        _USUS_TELEFONO = ""
        _USUS_FEC_REGISTRO = ""
        _USUS_FEC_MODIFICACION = ""
        _ESES_NID = 0
        _PEPE_NID = 0
        _EMEM_RUT = ""
        _cantPagina = 50
        _numPagina = 0
    End Sub
#End Region
#Region "PROPERTY"
    Public Property USUS_NID() As String
        Get
            Return _USUS_NID
        End Get
        Set(ByVal value As String)
            _USUS_NID = value
        End Set
    End Property

    Public Property USUS_RUT() As String
        Get
            Return _USUS_RUT
        End Get
        Set(ByVal value As String)
            _USUS_RUT = value
        End Set
    End Property

    Public Property USUS_USUARIO() As String
        Get
            Return _USUS_USUARIO
        End Get
        Set(ByVal value As String)
            _USUS_USUARIO = value
        End Set
    End Property

    Public Property USUS_PASSWORD() As String
        Get
            Return _USUS_PASSWORD
        End Get
        Set(ByVal value As String)
            _USUS_PASSWORD = value
        End Set
    End Property

    Public Property USUS_NOMBRE() As String
        Get
            Return _USUS_NOMBRE
        End Get
        Set(ByVal value As String)
            _USUS_NOMBRE = value
        End Set
    End Property

    Public Property USUS_APPATERNO() As String
        Get
            Return _USUS_APPATERNO
        End Get
        Set(ByVal value As String)
            _USUS_APPATERNO = value
        End Set
    End Property

    Public Property USUS_APMATERNO() As String
        Get
            Return _USUS_APMATERNO
        End Get
        Set(ByVal value As String)
            _USUS_APMATERNO = value
        End Set
    End Property

    Public Property USUS_EMAIL() As String
        Get
            Return _USUS_EMAIL
        End Get
        Set(ByVal value As String)
            _USUS_EMAIL = value
        End Set
    End Property

    Public Property USUS_TELEFONO() As String
        Get
            Return _USUS_TELEFONO
        End Get
        Set(ByVal value As String)
            _USUS_TELEFONO = value
        End Set
    End Property

    Public Property USUS_FEC_REGISTRO() As String
        Get
            Return _USUS_FEC_REGISTRO
        End Get
        Set(ByVal value As String)
            _USUS_FEC_REGISTRO = value
        End Set
    End Property

    Public Property USUS_FEC_MODIFICACION() As String
        Get
            Return _USUS_FEC_MODIFICACION
        End Get
        Set(ByVal value As String)
            _USUS_FEC_MODIFICACION = value
        End Set
    End Property

    Public Property ESES_NID() As String
        Get
            Return _ESES_NID
        End Get
        Set(ByVal value As String)
            _ESES_NID = value
        End Set
    End Property

    Public Property PEPE_NID() As String
        Get
            Return _PEPE_NID
        End Get
        Set(ByVal value As String)
            _PEPE_NID = value
        End Set
    End Property

    Public Property EMEM_RUT() As String
        Get
            Return _EMEM_RUT
        End Get
        Set(ByVal value As String)
            _EMEM_RUT = value
        End Set
    End Property

    Public Property cantPagina() As Integer
        Get
            Return _cantPagina
        End Get
        Set(ByVal value As Integer)
            _cantPagina = value
        End Set
    End Property

    Public Property numPagina() As Integer
        Get
            Return _numPagina
        End Get
        Set(ByVal value As Integer)
            _numPagina = value
        End Set
    End Property
#End Region
#Region "FUNCIONES Y METODOS DE LA CLASE"

    Public Function ListaUsuariosApp() As String
        Dim v_str_respuestaJson As String = ""
        Try
            v_obj_clsErrores.id = 0
            v_obj_clsErrores.desc = ""
            v_obj_clsErrores.clase = "cls_usuariosApp"
            v_obj_clsErrores.metodo = "ListaUsuariosApp"
            v_obj_clsParametros.Limpiar()
            v_obj_clsParametros.Agregar("p_cantpag", Me._cantPagina)
            v_obj_clsParametros.Agregar("p_numPag", Me._numPagina)
            v_obj_clsParametros.Agregar("p_str_rut", Me._USUS_RUT)
            v_obj_clsParametros.Agregar("p_str_usuario", Me._USUS_USUARIO)
            v_dts_respuesta = v_obj_wsService.EjecutarConParametroXML(v_str_keyConn, v_obj_clsParametros.GeneraDocXML("parametros"), "SPBS_USUS_LISTA_USUARIOS")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                v_str_respuestaJson = v_obj_json.listaParaGrilla(True, v_dts_respuesta.Tables(0).Rows(0).Item(0), v_dts_respuesta.Tables(1), v_obj_clsErrores)
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.registraErrorEnLog()
                v_str_respuestaJson = v_obj_json.listaParaGrilla(False, 0, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            End If
            v_dts_respuesta.Dispose()
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.registraErrorEnLog()
            v_str_respuestaJson = v_obj_json.listaParaGrilla(False, 0, v_dts_respuesta.Tables(0), v_obj_clsErrores)
        Finally
            v_dts_respuesta = Nothing
            v_obj_clsParametros.Dispose()
            v_obj_clsParametros = Nothing
            v_obj_wsService.Dispose()
            v_obj_wsService = Nothing
            v_obj_clsLibreria.Dispose()
            v_obj_clsLibreria = Nothing
        End Try
        Return v_str_respuestaJson
    End Function

    Public Function ListarEstadosUsuarios() As String
        Dim v_str_respuestaJson As String = ""
        Try
            v_obj_clsErrores.id = 0
            v_obj_clsErrores.desc = ""
            v_obj_clsErrores.clase = "cls_usuariosApp"
            v_obj_clsErrores.metodo = "ListarEstadosUsuarios"
            v_dts_respuesta = v_obj_wsService.EjecutarSinParametros(v_str_keyConn, "SPBS_CSCS_LISTA_ESTADOS_USUARIOS")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                v_str_respuestaJson = v_obj_json.listaParaCombobox(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.registraErrorEnLog()
                v_str_respuestaJson = v_obj_json.listaParaCombobox(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            End If
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.registraErrorEnLog()
            v_str_respuestaJson = v_obj_json.listaParaCombobox(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
        Finally
            v_dts_respuesta = Nothing
            v_obj_clsParametros.Dispose()
            v_obj_clsParametros = Nothing
            v_obj_wsService.Dispose()
            v_obj_wsService = Nothing
            v_obj_clsLibreria.Dispose()
            v_obj_clsLibreria = Nothing
        End Try
        Return v_str_respuestaJson
    End Function

    Public Function ListarPerfiles() As String
        Dim v_str_respuestaJson As String = ""
        Try
            v_obj_clsErrores.id = 0
            v_obj_clsErrores.desc = ""
            v_obj_clsErrores.metodo = "ListarPerfiles"
            v_obj_clsErrores.clase = "cls_usuariosApp"
            v_dts_respuesta = v_obj_wsService.EjecutarSinParametros(v_str_keyConn, "SPBS_PEPE_LISTA_PERFILES_VIGENTES")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                If v_dts_respuesta.Tables(0).Rows.Count > 0 Then
                    v_str_respuestaJson = v_obj_json.listaParaCombobox(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
                Else
                    v_obj_clsErrores.id = 1
                    v_obj_clsErrores.desc = "No se han encontrado perfiles disponibles para listar"
                    v_str_respuestaJson = v_obj_json.listaParaCombobox(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
                End If
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.registraErrorEnLog()
                v_str_respuestaJson = v_obj_json.listaParaCombobox(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            End If
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.registraErrorEnLog()
            v_str_respuestaJson = v_obj_json.listaParaCombobox(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
        Finally
            v_dts_respuesta = Nothing
            v_obj_clsParametros.Dispose()
            v_obj_clsParametros = Nothing
            v_obj_wsService.Dispose()
            v_obj_wsService = Nothing
            v_obj_clsLibreria.Dispose()
            v_obj_clsLibreria = Nothing
        End Try
        Return v_str_respuestaJson
    End Function

    Public Function GrabaDatosUsuario() As String
        Dim v_str_respuestaJson As String = ""
        Try
            v_obj_clsErrores.id = 0
            v_obj_clsErrores.desc = ""
            v_obj_clsErrores.metodo = "GrabaDatosUsuario"
            v_obj_clsErrores.clase = "cls_usuariosApp"
            v_obj_clsParametros.Limpiar()
            v_obj_clsParametros.Agregar("p_int_nid", Me._USUS_NID)
            v_obj_clsParametros.Agregar("p_str_rut", Me._USUS_RUT)
            v_obj_clsParametros.Agregar("p_str_usuario", Me._USUS_USUARIO)
            v_obj_clsParametros.Agregar("p_str_password", v_obj_clsLibreria.HashPassword(Me._USUS_PASSWORD))
            v_obj_clsParametros.Agregar("p_str_nombre", Me._USUS_NOMBRE)
            v_obj_clsParametros.Agregar("p_str_appaterno", Me._USUS_APPATERNO)
            v_obj_clsParametros.Agregar("p_str_apmaterno", Me._USUS_APMATERNO)
            v_obj_clsParametros.Agregar("p_str_email", Me._USUS_EMAIL)
            v_obj_clsParametros.Agregar("p_str_telefono", Me._USUS_TELEFONO)
            v_obj_clsParametros.Agregar("p_int_perfil", Me._PEPE_NID)
            v_obj_clsParametros.Agregar("p_int_estado", Me._ESES_NID)
            v_obj_clsParametros.Agregar("p_str_empresa", Me._EMEM_RUT)
            v_dts_respuesta = v_obj_wsService.EjecutarConParametroXML(v_str_keyConn, v_obj_clsParametros.GeneraDocXML("parametros"), "SPBS_USUS_GRABA_USUARIO")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                If v_dts_respuesta.Tables(0).Rows.Count > 1 Then
                    If v_dts_respuesta.Tables(0).Rows(0).Item("NUM_ERROR") = 0 Then
                        If CType(Me._USUS_NID, Integer) = 0 Then Call EnviarPassword()
                    End If
                End If
                v_str_respuestaJson = v_obj_json.respuestaFormularioJson(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.registraErrorEnLog()
                v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            End If
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.registraErrorEnLog()
            v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
        Finally
            v_dts_respuesta = Nothing
            v_obj_clsParametros.Dispose()
            v_obj_clsParametros = Nothing
            v_obj_wsService.Dispose()
            v_obj_wsService = Nothing
            v_obj_clsLibreria.Dispose()
            v_obj_clsLibreria = Nothing
        End Try
        Return v_str_respuestaJson
    End Function

    Public Function ListaDatosUsuario() As String
        Dim v_str_respuestaJson As String = ""
        Try
            v_obj_clsErrores.id = 0
            v_obj_clsErrores.desc = ""
            v_obj_clsErrores.metodo = "ListaDatosUsuario"
            v_obj_clsErrores.clase = "cls_usuariosApp"
            v_obj_clsParametros.Limpiar()
            v_obj_clsParametros.Agregar("p_int_nid", Me._USUS_NID)
            v_obj_clsParametros.Agregar("p_str_rutUsuario", Me._USUS_RUT)
            v_dts_respuesta = v_obj_wsService.EjecutarConParametroXML(v_str_keyConn, v_obj_clsParametros.GeneraDocXML("parametros"), "SPBS_USUS_OBTIENE_USUARIO")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                v_str_respuestaJson = v_obj_json.respuestaFormularioJson(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.registraErrorEnLog()
                v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            End If
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.registraErrorEnLog()
            v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
        Finally
            v_dts_respuesta = Nothing
            v_obj_clsParametros.Dispose()
            v_obj_clsParametros = Nothing
            v_obj_wsService.Dispose()
            v_obj_wsService = Nothing
            v_obj_clsLibreria.Dispose()
            v_obj_clsLibreria = Nothing
        End Try
        Return v_str_respuestaJson
    End Function

    Public Function EliminarUsuario() As String
        Dim v_str_respuestaJson As String = ""
        Try
            v_obj_clsErrores.id = 0
            v_obj_clsErrores.desc = ""
            v_obj_clsErrores.metodo = "EliminarUsuario"
            v_obj_clsErrores.clase = "cls_usuariosApp"
            v_obj_clsParametros.Limpiar()
            v_obj_clsParametros.Agregar("USUS_NID", USUS_NID)
            v_dts_respuesta = v_obj_wsService.EjecutarConParametroXML(v_str_keyConn, v_obj_clsParametros.GeneraDocXML("parametros"), "SPBS_USUS_ELIMINAR_USUARIO")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                v_str_respuestaJson = v_obj_json.respuestaFormularioJson(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.registraErrorEnLog()
                v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            End If
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.registraErrorEnLog()
            v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
        Finally
            v_dts_respuesta = Nothing
            v_obj_clsParametros.Dispose()
            v_obj_clsParametros = Nothing
            v_obj_wsService.Dispose()
            v_obj_wsService = Nothing
            v_obj_clsLibreria.Dispose()
            v_obj_clsLibreria = Nothing
        End Try
        Return v_str_respuestaJson
    End Function

    Public Function CambiarPassword() As String
        Dim strRespuestaJson As String = ""
        Try
            v_obj_clsParametros.Limpiar()
            v_obj_clsParametros.Agregar("p_str_usuario", USUS_USUARIO)
            v_obj_clsParametros.Agregar("p_str_password", v_obj_clsLibreria.HashPassword(Me._USUS_PASSWORD))
            v_dts_respuesta = v_obj_wsService.EjecutarConParametroXML(v_str_keyConn, v_obj_clsParametros.GeneraDocXML("parametros"), "SPBS_USUS_CAMBIAR_PASSWORD")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                If v_dts_respuesta.Tables(0).Rows(0).Item("NUM_ERROR").ToString = "0" Then
                    USUS_NOMBRE = v_dts_respuesta.Tables(0).Rows(0).Item("USUS_NOMBRE").ToString
                    USUS_APPATERNO = v_dts_respuesta.Tables(0).Rows(0).Item("USUS_APPATERNO").ToString
                    USUS_EMAIL = v_dts_respuesta.Tables(0).Rows(0).Item("USUS_EMAIL").ToString
                    Call EnviarPassword()
                    strRespuestaJson = v_obj_json.respuestaFormularioJson(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
                Else
                    v_obj_clsErrores.id = v_dts_respuesta.Tables(0).Rows(0).Item("NUM_ERROR").ToString
                    v_obj_clsErrores.desc = v_dts_respuesta.Tables(0).Rows(0).Item("GLS_ERROR").ToString
                    v_obj_clsErrores.metodo = "CambiarPassword"
                    v_obj_clsErrores.clase = "cls_usuariosApp"
                    strRespuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
                End If
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.metodo = "CambiarPassword"
                v_obj_clsErrores.clase = "cls_usuariosApp"
                v_obj_clsErrores.registraErrorEnLog()
                strRespuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            End If
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.metodo = "CambiarPassword"
            v_obj_clsErrores.clase = "cls_usuariosApp"
            v_obj_clsErrores.registraErrorEnLog()
            strRespuestaJson = v_obj_json.respuestaFormularioJson(False, Nothing, v_obj_clsErrores)
        Finally
            v_dts_respuesta = Nothing
            v_obj_clsParametros.Dispose()
            v_obj_clsParametros = Nothing
            v_obj_wsService.Dispose()
            v_obj_wsService = Nothing
            v_obj_clsLibreria.Dispose()
            v_obj_clsLibreria = Nothing
        End Try
        Return strRespuestaJson
    End Function

    Private Sub EnviarPassword()
        Dim vXML As String = ""
        vXML &= "<parametros>"
        vXML &= "<USUS_NOMBRE>" & USUS_NOMBRE.ToString.ToUpper & " " & USUS_APPATERNO.ToString.ToUpper & "</USUS_NOMBRE>"
        vXML &= "<USUS_USUARIO>" & USUS_USUARIO.ToString.ToUpper & "</USUS_USUARIO>"
        vXML &= "<USUS_PASSWORD>" & USUS_PASSWORD & "</USUS_PASSWORD>"
        vXML &= "</parametros>"
        v_obj_mail.Asunto = System.Configuration.ConfigurationManager.AppSettings.Get("asuntoMailRestablecePass")
        v_obj_mail.CorreoDesde = v_str_CorreoDesde
        v_obj_mail.CorreoDestino = USUS_EMAIL
        v_obj_mail.ServidorMail = v_str_ServidorMail
        v_obj_mail.UsuarioMail = v_str_usuarioMail
        v_obj_mail.ClaveMail = v_str_claveMail
        v_obj_mail.DominioMail = v_str_dominioMail
        v_obj_mail.CuerpoMensaje = v_obj_clsLibreria.Transformar(System.Configuration.ConfigurationManager.AppSettings.Get("xslPassword"), vXML)
        v_obj_mail.EsHTML = True
        v_obj_mail.EnvioMail()
    End Sub

#End Region
End Class
